Programmable integrated circuits (ICs) are a well-known type of integrated circuit that can be programmed to perform specified logic functions. The phrase “programmable IC” can refer to various types of programmable ICs, whether partially programmable or fully programmable. Examples of programmable ICs can include, but are not limited to, devices such as Field Programmable Gate Arrays (FPGAs), Complex Programmable Logic Devices (CPLDs), Programmable Logic Arrays (PLAs), Programmable Array Logic (PAL) devices, or the like. Typically within a programmable IC, the functionality of the device is controlled by data bits provided to the device for that purpose. The data bits can be stored in volatile memory (e.g., static memory cells, as in FPGAs and some CPLDs), in non-volatile memory (e.g., FLASH memory, as in some CPLDs), or in any other type of memory cell.
Other programmable ICs can be programmed by applying a processing layer, such as a metal layer, that programmably interconnects the various elements on the device. These programmable ICs are known as mask programmable devices. programmable ICs can also be implemented in other ways, e.g., using fuse or antifuse technology. The phrase “programmable IC” can include, but is not limited to these devices and may further encompass devices that are only partially programmable. For example, one type of programmable IC includes a combination of hard-coded transistor logic and a programmable switch fabric that programmably interconnects the hard-coded transistor logic.
Due to the rich functionality offered by modern programmable ICs, it is increasingly common to implement and deploy circuit designs using these devices. For example, a modern programmable IC can be used to implement a digital signal processing design that supports a plurality of different data rates.
High level modeling systems (HLMSs) refer to a class of electronic design automation (EDA) tools that facilitate graphic design of circuits and systems. Typically, a circuit designer uses a drag-and-drop paradigm of the HLMS to bring circuit blocks into a graphic circuit design environment. The circuit blocks can be interconnected by graphically drawing wires between the blocks. Each circuit block can specify information such as the operating frequency of the circuit block as well as the data types of the various input ports and output ports of the circuit block.
A modern HLMS can perform a function called rate realization. Rate realization refers to the process by which the various circuit blocks of the circuit design are coupled to a system clock. Conventional systems are constrained to using a particular rate realization technique for the entire circuit design. For example, a conventional HLMS will typically use a multiple synchronous clock-based rate realization technique where each different data rate is realized using a single, different clock source. In other cases, the HLMS will use a clock enable-based rate realization technique where a single clock source is used cooperatively with a clock enable network to realize a plurality of different data rates of the circuit design.